package com.whfc.wxmp.api.base.service;

import com.whfc.base.dto.MsgRecordDTO;
import com.whfc.base.dto.MsgStatisticsDTO;
import com.whfc.base.param.WarnMsgSearchParam;
import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.common.result.PageVO;
import com.whfc.entity.dto.msg.AppWarnMsgDTO;
import com.whfc.entity.dto.msg.MsgCountNumDTO;

import java.util.List;
import java.util.Map;

/**
 * @Description: 我的消息-service
 * @author: xugcheng
 * @version: 1.0
 * @date: 2019/11/30 9:09
 */
public interface WxMessageService {

    /**
     * 查询报警消息概况
     *
     * @param deptId
     * @param phone
     * @return
     */
    ListData<AppWarnMsgDTO> getWarnGeneral(Integer deptId, String phone);

    /**
     * 获取报警消息列表
     *
     * @param deptId
     * @param phone
     * @param handleState
     * @param moduleType
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppWarnMsgDTO> getWarnMsgList(Integer deptId, String phone, Integer handleState, Integer moduleType, Integer pageNum, Integer pageSize);

    /**
     * 设置消息已读
     *
     * @param idList
     */
    void setMsgRead(List<Integer> idList);

    /**
     * 删除消息
     *
     * @param idList
     */
    void delMsg(List<Integer> idList);


    /**
     * 首页消息列表
     *
     * @param userPhone
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param state
     * @param moduleType
     * @return
     */
    PageData<AppWarnMsgDTO> list(String userPhone, Integer pageNum, Integer pageSize, Integer deptId, Integer state, Integer moduleType);

    /**
     * 首页-获取最新的待我审批
     * @param phone
     * @return
     */
    Map getNewApproveWithMe(String phone, Integer deptId);

    /**
     * 消息类型数据统计
     *
     * @param userId
     * @param deptId
     * @param warnType
     * @return
     */
    List<MsgStatisticsDTO> getWarnMsgStatistics(Integer deptId, Integer warnType, Integer userId);

    /**
     * 报警消息分页
     *
     * @param param
     * @return
     */
    PageVO<MsgRecordDTO> getWarnMsgPage(WarnMsgSearchParam param);
}
